package ai.leinao.notify.core;

import ai.leinao.notify.core.template.Template;
import ai.leinao.notify.core.template.TemplateRegistry;
import lombok.AllArgsConstructor;
import lombok.NonNull;

import java.util.Map;
import java.util.Objects;

/**
 * 通知器抽象类
 *
 * @author zhong.wang
 * @date 2025/7/8
 */
@AllArgsConstructor
public abstract class AbstractNotifier<T extends Template> implements Notifier<T> {
    /**
     * 模板管理器
     */
    private final TemplateRegistry templateRegistry;

    /**
     * 指定模板ID发送消息
     *
     * @param templateId 模板ID
     * @param context 上下文
     */
    public void send(@NonNull String templateId, @NonNull Map<String,Object> context){
        T template = templateRegistry.getTemplate(getNotifyType(), templateId);
        if(Objects.nonNull(template)){
            send(template, context);
        }else{
            throw new UnsupportedOperationException("模板不存在:" + templateId);
        }
    }

}
